\section{Gram\'atica y tokens}

\subsection{Gram\'atica utilizada para el lenguaje F} \label{sec:def}

$$
<V_N, V_T, P, S>
$$
donde:
\begin{align*}
V_N &= \{ E, G, N \} \\
V_T &= \{ box, circle, scale, move, repeat, rotate, define, name, int, float \} \\
S &= E \\
P &= \\
& E \rightarrow \lambda \\
& E \rightarrow E ~ G \\
& G \rightarrow box ~ N ~ N \\
& G \rightarrow circle ~ N \\
& G \rightarrow define ~ name ~ G \\
& G \rightarrow name \\
& G \rightarrow move ~ N ~ N ~ G \\
& G \rightarrow scale ~ N ~ N ~ G\\
& G \rightarrow rotate ~ N ~ G \\
& G \rightarrow repeat ~ int ~ N ~ N ~ G \\
& G \rightarrow (~ E ~ G ~) \\
& N \rightarrow int \\
& N \rightarrow float
\end{align*}

\subsection{Definici\'on de los tipos de tokens}

\begin{itemize}
\item[box:] La cadena ``box'' ignorando uso de may\'usculas o min\'usculas.
\item[circle:] La cadena ``circle'' ignorando uso de may\'usculas o min\'usculas.
\item[scale:] La cadena ``scale'' ignorando uso de may\'usculas o min\'usculas.
\item[move:] La cadena ``move'' ignorando uso de may\'usculas o min\'usculas.
\item[repeat:] La cadena ``repeat'' ignorando uso de may\'usculas o min\'usculas.
\item[rotate:] La cadena ``rotate'' ignorando uso de may\'usculas o min\'usculas.
\item[define:] La cadena ``define'' ignorando uso de may\'usculas o min\'usculas.
\item[name:] Cualquier cadena alfanum\'erica que comience con una letra y se distinta a las anteriores.
\item[int:] Cualquier cadena que represente un n\'umero entero.
\item[float:] Cualquier cadena que represente un n\'umero de punto flotante (con el caracter ``.'' presente y sin tener en cuenta notaci\'on exponencial).
\end{itemize}
